<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 
            解构赋值 
            作用: 快速从对象(多维)或者数组(多维)中提炼数据
            解构数组:
                var [变量1,变量2,...变量n] = 原数组;
                // 按照数组的索引顺序 挨个给变量1 变量2 赋值 
                解构多维数组  
                多维数组怎么写  var 后边怎么写 把数据换成变量即可

             解构对象:
                var {键名} = 原对象;
                var {键名:别名} = 原对象;  // 起来别名 只能用别名 
                // 原对象 查找记得键名 然后 将值 赋值给 {}内 跟 自己键重名的
                解构多维对象
                多维对象怎么写  var 后边怎么写 把数据换成变量即可


         set数据结构  
            长的像数组   里边的元素唯一
            创建集合:
                var 名字 =  new Set([数据1,数据2,...数据n]);

                size
                add()
                delete()
                has()
                clear()
                forEach()

         map数据结构 
            长的像对象   里边的元素唯一
             创建map:
                var 名字 =  new Map([[key,value],[key,value],[key,value]]);

                size
                set()
                get()
                delete()
                has()
                clear()
                forEach()


        扩展运算符
            ... 

            展开:
                数组 集合 map 对象 实参 
                数组求最大值
                合并数组  
                合并对象
            合并
                解构 
                形参  
                function fn1(a,b,...args){
                    console.log(args); 存储多出来的所有实参 
                }


        对象的简写方式:
                1. 当键和值名字一样  并且值是个变量   键值可以只写一个
                2. 当键对应的值是个函数(箭头函数除外)  :function 可以省略

                var name = 'kangbazi';
                var obj = {
                    name:name;
                    sing:function(){
                        console.log(this)
                    }
                }

                  var obj = {
                    name;
                    sing(){
                        console.log(this)
                    }
                }



          模块化开发:
            1. script标签 需要加 type="module"
            2. 用服务器的方式打开 
            
            
            每个模块都是独立的js文件 
            都有独立的文件作用域



            导出  
                语法1:
                    export default 数据;   只能出现一次 
                语法2:
                    export const或者let 变量名 = 值; 


            导入 
                语法1:
                    import 变量 from '文件地址'; //别忘了.js后缀
                语法2:
                    import {变量} from '文件地址'; //别忘了.js后缀
                    
 

            使用
        */
    </script>
</body>
</html>